/*
 **异步校验表单重复的方法
 **传入json的格式
 json={
   url:'ssss',           //验证需要的url
   method:'get',         //默认get方法
   tip:'存储名称重复'    //不写默认提示
   response:exist        //后端get方法返回重复提示的字段，默认为exist，exist为true代表重复
  }
*/
import axios from '../libs/api.request';
exports.install = function (Vue, options) {
    Vue.prototype.checkBackRepeat = function (json){//全局函数1
        let url = json.url;
        let editName = json.edit;
        //利用闭包返回一个函数，因为在vue文件中自定义的验证必须是个函数，闭包帮我们保存一些需要的东西
        return function (rule, value, callback) {//这三个参数是验证函数必须传入的
            if (editName == value) {
                callback();
                return;
            }
            const params = {};
            params[rule.field] = value;
            axios.request({
                url: url,
                params,
                method:'post'
            }).then(res => {
                if(res.success){
                    // 验证通过则将当前的文本框的值赋值给editName，下次不再对此进行验证
                    editName = value;
                    callback();
                }else{
                    callback(new Error(json.tip ? json.tip : '名称重复'));
                }
            });
        }
    };
};